function subsets(nums) {
    const result = []

    function backtrack(path, start) {
       // 将当前路径加入结果集
       result.push([...path])
       // 从当前索引开始遍历 nums 数组
       for (let i = start; i < nums.length; i++) {
          // 将当前数字加入路径
          path.push(nums[i])
          // 递归调用回溯函数，传递更新后的路径和新的起始索引
          backtrack(path, i + 1)
          // 回溯，撤销上一步选择
          path.pop()
       }
    }

    // 初始化回溯
    backtrack([], 0)
    return result
 }

 // 示例测试
 console.log(subsets([1, 2, 3])) // 输出：[[], [1], [2], [1, 2], [3], [1, 3], [2, 3], [1, 2, 3]]
 console.log(subsets([0])) // 输出：[[], [0]]